package com.hs.srm.admin.modules.requisition.entity;

import cn.afterturn.easypoi.excel.annotation.Excel;
import com.alibaba.fastjson.annotation.JSONField;
import com.baomidou.mybatisplus.annotations.TableField;
import com.baomidou.mybatisplus.annotations.TableId;
import com.baomidou.mybatisplus.annotations.TableName;
import com.baomidou.mybatisplus.annotations.Version;
import com.baomidou.mybatisplus.enums.IdType;
import com.hs.srm.base.common.annotation.DictMapping;
import com.hs.srm.base.common.base.CloneableEntity;
import com.hs.srm.base.common.utils.DictDataUtil;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;

/**
 * @author ych
 * @since 2020-05-09 09:12:05
 */
@Data
@AllArgsConstructor
@NoArgsConstructor
@TableName("sample_purch_request_item")
public class SamplePurchRequestItemEntity implements Serializable, CloneableEntity<SamplePurchRequestItemEntity> {

    private static final long serialVersionUID = 1L;
    public static final int STATE_CHUSHI = 0xffffffff;// 初始状态
    public static final int STATE_CAOGAO = 0x00000000;// 草稿
    public static final int STATE_YIBAOJIA = 0x00000001;// 已报价
    public static final int STATE_SHENHEZHONG = 0x00000002;// 审核中
    public static final int STATE_SHENHETONGGUO = 0x00000003;// 审核通过
    public static final int STATE_SHENHEBOHUI = 0xfffffffd;// 审核驳回

    public static final int CAOGAO = -2;// 草稿
    public static final int YIBAOJIA = 4;// 供应商已报价

    @TableId(value = "pk_id", type = IdType.UUID)
    private String pkId;

    /**
     * 采购申请编码
     */
    @TableField("purch_request_code")
    private String purchRequestCode;

    /**
     * 行项目号
     */
    @TableField("purch_request_item_code")
    private String purchRequestItemCode;

    /**
     * 样品类型：生产性物料、生产性固定资产、备品备件、OEM
     */
    @TableField("item_type")
    @DictMapping(type = DictDataUtil.DictType.YPLX)
    private String itemType;

    /**
     * 凭证类别
     */
    @TableField("pr_category")
    private String prCategory;

    /**
     * 凭证类型
     */
    @TableField("pr_type")
    private String prType;

    /**
     * 删除标志
     */
    @TableField("delete_flag")
    private String deleteFlag;

    /**
     * 批准标识
     */
    @TableField("approve_flag")
    private String approveFlag;

    /**
     * 项目类别
     */
    @TableField("project_category")
    private String projectCategory;

    /**
     * 科目类别
     */
    @TableField("subject_category")
    private String subjectCategory;

    /**
     * 更改日期
     */
    @TableField("update_date")
    @JSONField(format = "yyyy-MM-dd")
    private Date updateDate;

    /**
     * 采购组
     */
    @TableField("purch_group")
    @DictMapping(type = DictDataUtil.DictType.CGZ)
    private String purchGroup;

    /**
     * 采购组织
     */
    @TableField("purch_org")
    @DictMapping(type = DictDataUtil.DictType.CGZZ)
    private String purchOrg;

    /**
     * 申请者
     */
    @TableField("applier")
    private String applier;

    /**
     * 物料描述
     */
    @TableField("material_desc")
    private String materialDesc;

    /**
     * 物料号
     */
    @TableField("material_code")
    private String materialCode;

    /**
     * 工厂
     */
    @TableField("factory")
    @DictMapping(type = DictDataUtil.DictType.GC)
    private String factory;

    /**
     * 库存地点
     */
    @TableField("storage_location")
    @DictMapping(type = DictDataUtil.DictType.KCDD)
    private String storageLocation;

    /**
     * 物料组
     */
    @TableField("material_group")
    @DictMapping(type = DictDataUtil.DictType.WLZ)
    private String materialGroup;

    /**
     * 总账科目
     */
    @TableField("ledger_account")
    private String ledgerAccount;

    /**
     * 申请数量
     */
    @TableField("apply_qty")
    private BigDecimal applyQty;

    /**
     * 计量单位
     */
    @TableField("measure_unit")
    @DictMapping(type = DictDataUtil.DictType.JLDW)
    private String measureUnit;

    /**
     * 需求日期
     */
    @TableField("request_date")
    @JSONField(format = "yyyy-MM-dd")
    private Date requestDate;

    /**
     * 交货日期
     */
    @TableField("delivery_date")
    @JSONField(format = "yyyy-MM-dd")
    private Date deliveryDate;

    /**
     * 交货日期类型
     */
    @TableField("delivery_date_type")
    private String deliveryDateType;

    /**
     * 价格
     */
    @TableField("purch_request_price")
    private BigDecimal purchRequestPrice;

    /**
     * 价格单位
     */
    @TableField("price_unit")
    private String priceUnit;

    /**
     * MRP 控制者（物料计划人）
     */
    @TableField("mrp_owner")
    private String mrpOwner;

    /**
     * 期望的供应商
     */
    @TableField("desired_vendor")
    private String desiredVendor;

    /**
     * 固定的供应商
     */
    @TableField("fixed_vendor")
    private String fixedVendor;

    /**
     * 分配的供应源
     */
    @TableField("assigned_supply_source")
    private String assignedSupplySource;

    /**
     * 消息类型: S 成功,E 错误,W 警告,I 信息,A 中断
     */
    @TableField("msg_type")
    private String msgType;

    /**
     * 消息文本
     */
    @TableField("msg_text")
    private String msgText;

    /**
     * 交货地址
     */
    @TableField("delivery_address")
    @DictMapping(type = DictDataUtil.DictType.JHDZ)
    private String deliveryAddress;

    /**
     * 采购订单号
     */
    @TableField("po_no")
    private String poNo;

    /**
     * 采购订单行项目号
     */
    @TableField("item_no")
    private String itemNo;

    /**
     * 采购订单行项目状态：驳回、部分驳回
     */
    @TableField("item_status")
    private String itemStatus;

    /**
     * 创建人
     */
    @TableField("created_by")
    private String createdBy;

    /**
     * 创建日期
     */
    @TableField("creation_date")
    @JSONField(format = "yyyy-MM-dd")
    private Date creationDate;

    /**
     * 修改人
     */
    @TableField("last_updated_by")
    private String lastUpdatedBy;

    /**
     * 修改日期
     */
    @TableField("last_update_date")
    @JSONField(format = "yyyy-MM-dd")
    private Date lastUpdateDate;

    /**
     * 价格
     */
    @TableField("dis_price")
    private BigDecimal disPrice;

    /**
     * 价格单位
     */
    @TableField("dis_price_unit")
    private String disPriceUnit;

    /**
     * 货币
     */
    @TableField("currency")
    @DictMapping(type = DictDataUtil.DictType.BZ)
    private String currency;

    /**
     * 税码
     */
    @TableField("tax_code")
    @DictMapping(type = DictDataUtil.DictType.SDM)
    private String taxCode;

    /**
     * 供应商编码
     */
    @TableField("vendor_code")
    private String vendorCode;

    /**
     * 供应商名称
     */
    @TableField("vendor_name")
    private String vendorName;

    /**
     * 货源状态
     */
    @TableField("goods_status")
    private Integer goodsStatus;

    /**
     * 版本号
     */
    @TableField("version")
    @Version
    private Integer version;

    /**
     * 合计
     */
    @TableField("count")
    private BigDecimal count;

    /**
     * 成本中心
     */
    @TableField("cost_center")
    @DictMapping(type = DictDataUtil.DictType.CBZX)
    private String costCenter;

    /**
     * 使用人
     */
    @TableField("use_people")
    private String usePeople;

    /**
     * 主资产号
     */
    @TableField("main_assets_code")
    private String mainAssetsCode;

    /**
     * 资产次级编号
     */
    @TableField("assets_sencond_code")
    private String assetsSencondCode;

    /**
     * 内部订单号
     */
    @TableField("internal_order_code")
    private String internalOrderCode;

    /**
     * 含税单价
     */
    @TableField("tax_price")
    private BigDecimal taxPrice;

    /**
     * 信息记录编码
     */
    @TableField("info_code")
    private String infoCode;

    /**
     * 部门
     */
    @TableField(exist = false)
    private String purchRequestDept;

    /**
     * 申请人
     */
    @TableField(exist = false)
    private String purchRequestStaff;

    /*
     * 规格
     */
    @TableField("specification")
    private java.lang.String specification;


    /*
     * 附件
     */
    @TableField("attachment")
    private java.lang.String attachment;


    /*
     * 试用次数
     */
    @TableField(exist = false)
    private java.lang.Integer reason;

    @TableField(exist = false)
    private SamplePurchRequestHeaderEntity samplePurchRequestHeaderEntity;


    @Override
    public SamplePurchRequestItemEntity clone() {
        try {
            return (SamplePurchRequestItemEntity) super.clone();
        } catch (CloneNotSupportedException ex) {
            ex.printStackTrace();
        }
        return null;
    }
}
